package com.itheima.线程池的创建和基本使用;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
 * @Author 王加鑫
 * @Date 2021/5/23 10:27
 * @Version 1.0
 */
public class Demo01 {
    public static void main(String[] args) {
        ThreadPoolExecutor pool = new ThreadPoolExecutor(
              1, //参数已:核心线程数量
              1, //参数二:最大线程数
              2, //参数三:空闲线程最大存活时间
              TimeUnit.SECONDS, //参数四:时间单位
              new ArrayBlockingQueue<>(3), //参数五:任务队列
              Executors.defaultThreadFactory(), //参数六:创建线程工厂
              new ThreadPoolExecutor.DiscardOldestPolicy() //参数七:任务的拒绝策略
        );

        //调用submit就是提交一个任务,线程辉自动指向run()方法
        for (int i = 0; i < 15; i++) {
            int y = i;
            pool.submit(() -> System.out.println(Thread.currentThread().getName() + " 创建了一个线程" + y));
        }






        //销毁线程池
        pool.shutdown();
    }
}
